/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Model;

/**
 * Constant class to manage static final values between classes.
 * @author Chiaki Sato
 * @since J2SDK 1.6
 * @version 1.0
 */
public class Const {

    /**
     * Traffic light green
     */
    public static final int LIGHT_GREEN = 0;
    /**
     * Traffic light red
     */
    public static final int LIGHT_RED = 1;
    /**
     * Traffic light none
     */
    public static final int LIGHT_NONE = 2;

    /**
     * Road block location north
     */
    public static final int NORTH = 0;
    /**
     * Road block location south
     */
    public static final int SOUTH = 1;
    /**
     * Road block location west
     */
    public static final int WEST = 0;
    /**
     * Road block location east
     */
    public static final int EAST = 1;

    /**
     * Road block position north-west
     */
    public static final boolean NORTH_WEST = true;
    /**
     * Road block position south-east
     */
    public static final boolean SOUTH_EAST = false;

    /**
     * Road length horizontal
     */
    public static final int ROAD_LENGTH_HORIZ = 10;
    /**
     * Road length vertical
     */
    public static final int ROAD_LENGTH_VERT = 10;

    /**
     * Pair road blocks count
     */
    public static final int ROAD_BLOCKS = 2;

    /**
     * Menu string
     */
    public static final String MENU_MAIN_TITLE = "=== MENU ===" ;
    /**
     * Menu string
     */
    public static final String MENU_MAIN_HORIZ_LANES_NUM = "1. Set Number of horizontal lanes (H-street) [min 1, max 3]" ;
    /**
     * Menu string
     */
    public static final String MENU_MAIN_VERT_LANES_NUM = "2. Set Number of vertical lanes (V-street) [min 1, max 4]" ;
    /**
     * Menu string
     */
    public static final String MENU_MAIN_PROBABILITY_ENTER_HORIZ = "3. Set Probability of a car entering H-street [min 0, max 1]" ;
    /**
     * Menu string
     */
    public static final String MENU_MAIN_PROBABILITY_ENTER_VERT = "4. Set Probability of a car entering V-street [min 0, max 1]" ;
    /**
     * Menu string
     */
    public static final String MENU_MAIN_RUN_ONE_SIMULATION = "5. Run one simulation cycle" ;
    /**
     * Menu string
     */
    public static final String MENU_MAIN_RUN_CYCLES_SIMULATION = "6. Set and run number of simulation cycles [min 1, max 10]" ;
    /**
     * Menu string
     */
    public static final String MENU_MAIN_GUI_HORIZ_LANES_NUM = "Set Number of horizontal lanes (H-street) [min 1, max 3]: " ;
    /**
     * Menu string
     */
    public static final String MENU_MAIN_GUI_VERT_LANES_NUM = "Set Number of vertical lanes (V-street) [min 1, max 4]: " ;
    /**
     * Menu string
     */
    public static final String MENU_MAIN_GUI_PROBABILITY_ENTER_HORIZ = "Set Probability of a car entering H-street [min 0, max 1]: " ;
    /**
     * Menu string
     */
    public static final String MENU_MAIN_GUI_PROBABILITY_ENTER_VERT = "Set Probability of a car entering V-street [min 0, max 1]: " ;
    /**
     * Menu string
     */
    public static final String MENU_MAIN_QUIT_PROGRAM = "7. Exit Program";
    /**
     * Menu string
     */
    public static final String MENU_ENTER_YOUR_CHOICE = "Enter your choice> " ;
    /**
     * Menu string
     */
    public static final String MENU_ENTER_A_NUMBER = "Enter a number> " ;
    /**
     * Menu string
     */
    public static final String MENU_SUB_TITLE = "=== SUB MENU ===" ;
    /**
     * Menu string
     */
    public static final String MENU_SUB_RUN_ONE_SIMULATION = "5. Run one simulation cycle" ;
    /**
     * Menu string
     */
    public static final String MENU_SUB_RUN_CYCLES_SIMULATION = "6. Set and run number of simulation cycles [min 1, max 10]" ;
    /**
     * Menu string
     */
    public static final String MENU_SUB_RETURN_MAIN_MENU = "7. Return to main memu" ;
    /**
     * Menu string
     */
    public static final String MENU_MAIN_MSG_GOODBYE = "Good-bye !" ;

    /**
     * Error message
     */
    public static final String ERR_MSG_INPUT_RANGE = "Error: Number should be between %d and %d !!";
    /**
     * Error message
     */
    public static final String ERR_MSG_INPUT_NOT_NUMBER = "Error: Input value have to be a number !!";

    /**
     * Error message
     */
    public static final String ERR_GUI_MSG_INPUT_RANGE = "Number should be between %d and %d !!";
    /**
     * Error message
     */
    public static final String ERR_GUI_MSG_INPUT_NOT_NUMBER = "Input value have to be a number !!";

    /**
     * Execute command to exit program
     */
    public static final int COMMAND_EXIT_PROGRAM = 0;
    /**
     * Execute command to run one simulation
     */
    public static final int COMMAND_RUN_ONE_SIMULATION = 1;
    /**
     * Execute command to run cycles simulation
     */
    public static final int COMMAND_RUN_CYCLES_SIMULATION = 2;
    /**
     * Execute command to return to main menu
     */
    public static final int COMMAND_RETURN_MAIN_MENU = 3;
    /**
     * Execute no command
     */
    public static final int COMMAND_NONE = -1;
    
    /**
     * Probability of a car entering a street
     */
    public static final int ENTER_NO_CAR =0;
    /**
     * Probability of a car entering a street
     */
    public static final int ENTER_CAR =1;

    /**
     * Input value range
     */
    public static final int MIN_HORIZ_LANES = 1;
    /**
     * Input value range
     */
    public static final int MAX_HORIZ_LANES = 3;
    /**
     * Input value range
     */
    public static final int MIN_VERT_LANES = 1;
    /**
     * Input value range
     */
    public static final int MAX_VERT_LANES = 4;
    /**
     * Input value range
     */
    public static final int MIN_PROBABILITY_HORIZ = 0;
    /**
     * Input value range
     */
    public static final int MAX_PROBABILITY_HORIZ = 1;
    /**
     * Input value range
     */
    public static final int MIN_PROBABILITY_VERT = 0;
    /**
     * Input value range
     */
    public static final int MAX_PROBABILITY_VERT = 1;
    /**
     * Input value range
     */
    public static final int MIN_RUN_CYCLES = 0;
    /**
     * Input value range
     */
    public static final int MAX_RUN_CYCLES = 10;

    /**
     * Traffic light symbol character
     */
    public static final String SYMBOL_TRAFFIC_LIGHT_GREEN = " ";
    /**
     * Traffic light symbol character
     */
    public static final String SYMBOL_TRAFFIC_LIGHT_RED = "*";

    /**
     * Street boundaries' symbol character
     */
    public static final String SYMBOL_STREET_BOUNDARIES_HORIZ = "-";
    /**
     * Street boundaries' symbol character
     */
    public static final String SYMBOL_STREET_BOUNDARIES_VERT = "|";

    /**
     * Car symbol character
     */
    public static final String SYMBOL_CAR = "c";
    
    /**
     * Car start position on street block
     */
    public static final int START_POSITIOM_CAR_ON_STREET = 0;

    /**
     * Street block position north
     */
    public static final int STREET_POSITION_NORTH = 0;

    /**
     * Street block position north
     */
    public static final int STREET_POSITION_SOUTH = 1;

    /**
     * Street block position north
     */
    public static final int STREET_POSITION_WEST = 2;

    /**
     * Street block position north
     */
    public static final int STREET_POSITION_EAST = 3;

    /**
     * lane width size
     */
    public static final int LANE_WIDTH = 22;

    /**
     * car margin to street line
     */
    public static final int CAR_MARGIN = 3;

}
